/**
 * 给你一个链表，删除链表的倒数第 n 个结点，并且返回链表的头结点
 */

var removeNthFromEnd = function (head, n) {
  let dummy = new ListNode();
  dummy.next = head;

  // 都指向第一个节点
  let n1 = dummy;
  let n2 = dummy;

  // n2向后移动n个位置
  for (let i = 0; i <= n; i++) {
    n2 = n2.next;
  }

  // 一直移动，知道n2指向最后一个节点
  while (n2 !== null) {
    n1 = n1.next;
    n2 = n2.next;
  }

  // 绕过要删除的那个节点
  n1.next = n1.next.next;
  return dummy.next;
};

// 链表要删除节点并非是delete
// 而是绕过那个节点
